docker搭建mysql8.0主备(主从复制) |
您所在的位置:网站首页 › mysql 主从 主备 区别 › docker搭建mysql8.0主备(主从复制) |
目录
前言1. 拉取mysql8.0.25镜像2. 启动mysql容器3. 修改配置文件4. 进入主容器mysql5. 进入从容器mysql6. 测试主从复制效果*注意事项:*
前言
由于最近项目中开始要用到mysql主备模式,所以赶紧去mysql官网学习下,尝试用docker搭建一个mysql主备(一主一从),启动两台容器来模拟两台服务器,原理和在两台服务器上搭建主备是一样的,需要注意的是,不管是两个容器还是两台linux服务器之间必须要能够相互通信的,否则搭建主备无法完成 1. 拉取mysql8.0.25镜像下面使用的是mysql8.0.25版本镜像(docker官网的镜像,应该是比较新的) docker pull mysql:8.0.25启动两台容器,一主一从,docker ps检查两台容器的运行状态,如下所示表示启动运行正常 --ip是用来指定容器启动过程中的ip地址,如果不指定,每次启动容器ip地址不固定,这样就会导致第一次搭建好的mysql主从复制在容器重启后无法组成主从复制了,因为主机容器的ip变了,从机容器无法连接到主机容器,所以这里才需要指定,一旦指定ip后,不管什么时候重启容器,容器的ip地址不会再发生变化 docker run -d --name mainer -p 8008:3306 -e MYSQL_ROOT_PASSWORD=root --ip 10.88.0.13 mysql:8.0.25 docker run -d --name follower -p 8009:3306 -e MYSQL_ROOT_PASSWORD=root --ip 10.88.0.14 mysql:8.0.25(1)编辑主容器my.cnf 将容器中的mysql配置文件my.cnf复制到宿主机 docker cp 8b7d5c7a7903:/etc/mysql/my.cnf ./ =========================================== vim my.cnf 在[mysqld]加上下面两行 log-bin=mysql-bin server-id=1 =========================================== 将编辑好的my.cnf配置文件放回容器中 docker cp ./my.cnf 8b7d5c7a7903:/etc/mysql 重启mysql主容器 docker restart 8b7d5c7a7903
(3)编辑从容器my.cnf 将容器中的mysql配置文件my.cnf复制到宿主机 docker cp a7edc962301f:/etc/mysql/my.cnf ./ =========================================== vim my.cnf 在[mysqld]加上下面两行 log-bin=mysql-bin server-id=2 =========================================== 将编辑好的my.cnf配置文件放回容器中 docker cp ./my.cnf a7edc962301f:/etc/mysql 重启mysql从容器 docker restart a7edc962301f
如下图所示这样说明mysql主从复制搭建成功!如果此处出现下面这样,请参考文章末尾的注意事项中的解决方法 Slave_IO_Running: connecting Slave_SQL_Running: Yes进入主机mysql创建数据库 create database test default charset utf8mb4; show databases;
1、首先执行下面命令查询下身份验证插件到底是哪一个? use mysql; select user,host,plugin from user;2、如果复制用户的身份验证插件是:caching_sha2_password,则需要指定GET_MASTER_PUBLIC_KEY=1; CHANGE MASTER TO MASTER_HOST='10.88.0.15', MASTER_PORT=3306, MASTER_USER='root', MASTER_PASSWORD='root', master_log_file='mysql-bin.000001', master_log_pos=552, master_connect_retry=60, GET_MASTER_PUBLIC_KEY=1;3、如果复制用户的身份验证插件是:mysql_native_password,则不需要指定GET_MASTER_PUBLIC_KEY=1; CHANGE MASTER TO MASTER_HOST='10.88.0.15', MASTER_PORT=3306, MASTER_USER='root', MASTER_PASSWORD='root', master_log_file='mysql-bin.000001', master_log_pos=552; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |